package de.fhd.pms.model;

import java.util.Date;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.Column;

import javax.persistence.CascadeType;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
//DOKUMENTATION FERTIG



/**
 * Definition der Struktur einer {@link Fahrt} (=Model).<br/>
 * Mithilfe dieses Model-Objekts wird die Struktur einer Fahrt abgebildet.
 * Außerdem wird, ausgehend vom hier definierten Model die Tabellenstruktur in
 * der MySQL-Datenbank abgebildet.
 * <ul>
 *   <li>MySQL Tabellenname: tbl_fahrt</li>
 * </ul>
 * @author Martin Schmid
 * @author Florian Schachner
 */


/* SCHRITT 1: 
 * Annotationen der Klasse und der ID
 */
@Entity
@Table(name = "tbl_fahrt")
public class Fahrt {

	@Id
	@GeneratedValue
	@Column(name = "pk_fid")
	private Integer id;
	private Date created;
	private Date startfahrt;
	private Integer startkilometer;
	private Date endefahrt;
	private Integer endekilometer;
	private Boolean abgerechnet;

	@ManyToOne
	@JoinColumn(name = "fk_aid", nullable = false)
	private Automobil automobil;

	@ManyToOne
	@JoinColumn(name = "fk_tid", nullable = false)
	private Teilnehmer teilnehmer;

	private Integer startstandort;
	private Integer endestandort;

	public Fahrt() {
		startfahrt = new Date();
	}

	/*
	 * SCHRITT 2: GETTER- UND SETTER-METHODEN Mithilfe der Getter- und
	 * Setter-Methoden kann diese Entity mit Daten aus der Datenbank gefüllt
	 * werden (Setter) und Daten in die Datenbank zurückgeschrieben werden
	 * (Getter).
	 */

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Date getCreated() {
		return created;
	}

	public void setCreated(Date created) {
		this.created = created;
	}

	public Date getStartfahrt() {
		return startfahrt;
	}

	public void setStartfahrt(Date startfahrt) {
		this.startfahrt = startfahrt;
	}

	public Integer getStartkilometer() {
		return startkilometer;
	}

	public void setStartkilometer(Integer startkilometer) {
		this.startkilometer = startkilometer;
	}

	public Integer getStartstandort() {
		return startstandort;
	}

	public void setStartstandort(Integer startstandort) {
		this.startstandort = startstandort;
	}

	public Date getEndefahrt() {
		return endefahrt;
	}

	public void setEndefahrt(Date endefahrt) {
		this.endefahrt = endefahrt;
	}

	public Integer getEndekilometer() {
		return endekilometer;
	}

	public void setEndekilometer(Integer endekilometer) {
		this.endekilometer = endekilometer;
	}

	public Integer getEndestandort() {
		return endestandort;
	}

	public void setEndestandort(Integer endestandort) {
		this.endestandort = endestandort;
	}

	public Boolean getAbgerechnet() {
		return abgerechnet;
	}

	public void setAbgerechnet(Boolean abgerechnet) {
		this.abgerechnet = abgerechnet;
	}

	public Automobil getAutomobil() {
		return automobil;
	}

	public void setAutomobil(Automobil automobil) {
		this.automobil = automobil;
	}

	public Teilnehmer getTeilnehmer() {
		return teilnehmer;
	}

	public void setTeilnehmer(Teilnehmer teilnehmer) {
		this.teilnehmer = teilnehmer;
	}

}
